package com.xd.core.api.service;


import com.xd.core.api.dto.*;
import com.xd.core.api.vo.BalanceVo;
import com.xd.core.api.vo.TowBalanceVo;
import com.xd.core.company.dto.RegisterDto;
import com.xd.core.company.entity.BindBank;
import net.sf.json.JSONObject;
import org.springframework.web.multipart.MultipartFile;

import java.io.IOException;
import java.util.HashMap;
import java.util.Map;

public interface ApiService {


    void prestoreRegister(RegisterDto registerDto) throws IOException;

    Map<String,String> upload(MultipartFile file, Integer companyId) throws Exception;

    void prestoreRegisterResult(String app_id,
                                String sign_type,
                                String client_trans_id,
                                String trans_timestamp,
                                String trans_type,
                                String callback_url,
                                String version,
                                String data,
                                String sign) throws Exception;

    BalanceVo balance(String walletNo, String type) throws IOException;



    HashMap<String,String> transferAccounts(TransferDto transferDto) throws IOException;

    JSONObject getRegisterStatus(String origClientTransId) throws IOException;

    String getAccountStatus(String walletNo) throws IOException;

    void withdrawDeposit(String allot_client_trans_id) throws IOException;

    HashMap<String, String> getTransferOrder(String clientTransId) throws IOException;

    void getTransferOrderReturn(String app_id,
                                String sign_type,
                                String client_trans_id,
                                String trans_timestamp,
                                String trans_type,
                                String callback_url,
                                String version,
                                String data,
                                String sign) throws Exception;

    void HTRevenueAccountReturn(String app_id,
                                String sign_type,
                                String client_trans_id,
                                String trans_timestamp,
                                String trans_type,
                                String callback_url,
                                String version,
                                String data,
                                String sign) throws Exception;

    void withdrawDepositReturn(String app_id,
                               String sign_type,
                               String client_trans_id,
                               String trans_timestamp,
                               String trans_type,
                               String callback_url,
                               String version,
                               String data,
                               String sign) throws Exception;

    void bindBankCard(BindBank bindBank) throws IOException;
    void allot(PrestoreWithdrawDepositDto prestoreWithdrawDepositDto) throws IOException;
    void outAmountAllot(Integer companyId,String wallet_no,String order_amount,String client_trans_id) throws IOException;
    void allotReturn(String app_id,
                     String sign_type,
                     String client_trans_id,
                     String trans_timestamp,
                     String trans_type,
                     String callback_url,
                     String version,
                     String data,
                     String sign) throws Exception;
    void outAmountAllotReturn(String app_id,
                     String sign_type,
                     String client_trans_id,
                     String trans_timestamp,
                     String trans_type,
                     String callback_url,
                     String version,
                     String data,
                     String sign) throws Exception;

    void baofuwithdrawDeposit(PrestoreWithdrawDepositDto prestoreWithdrawDepositDto) throws IOException;

    void towRecharge(TowRechargeDto towRechargeDto) throws Exception;

    TowBalanceVo towBalance(TowBalanceDto towBalanceDto);

    TowBalanceVo PTtowBalance();

    void refuseCertification(com.alibaba.fastjson.JSONObject json);

    void acceptContractNotifyUrl(com.alibaba.fastjson.JSONObject json);

    void acceptNotarization(com.alibaba.fastjson.JSONObject json);

    void signFailReason(com.alibaba.fastjson.JSONObject json);
}
